<script setup>
import { ref } from 'vue'
import { api } from '../../js/ajax_application'
import { tools } from '../../js/tools'
import { ElMessageBox, ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'

// 初始化Vue的路由实例
const router = useRouter()

// 初始化查询信息的响应式对象，包含查询条件
const queryInfo = ref({
  title: '',
  order: 1,
})
// 初始化分页信息的响应式对象，包含当前页码和每页大小
const page = ref({
  pageNumber: 1,
  pageSize: 12,
})
// 初始化列表数据的响应式对象，用于存储查询结果
const list = ref([])

/**
 * 执行查询操作
 * 该函数向后端发送查询请求，并根据返回的数据更新页面信息和列表数据
 */
const query = () => {
  // 构造请求URL和参数，并发送GET请求
  api.get(
    `/autodata/query/news/${page.value.pageSize}/${page.value.pageNumber}/${queryInfo.value.order}`,
    tools.mergeJson(queryInfo.value, page.value),
    data => {
      // 根据请求结果更新数据或显示提示信息
      if (data.success) {
        list.value = data.data.data
        page.value = data.data.pageBean
        return
      }
      ElMessageBox.alert(data.message, '新闻管理')
    },
  )
}

// 在组件加载时执行查询操作
query()
</script>

<template>
  <div class="news">
    <div v-for="d in list" :key="d.nid">
      <el-card>
        <template #header>
          <div class="card-header">
            <span>{{ d.source }}</span>
          </div>
        </template>
        <div @click="showDetail(d.nid)" class="news-title">
          {{ d.title }}
        </div>
        <template #footer>
          <div class="card-footer">
            {{ tools.formatDate(d.createdAt) }} 点击量{{ d.hits }}
            <tr />
            {{ d.imgs }}
          </div>
        </template>
      </el-card>
    </div>
    {{ list }}
  </div>
</template>

<style scoped></style>
